package com.common.utils;

import lombok.Data;

import java.io.Serializable;

/**
 * Ajax 请求统一响应工具类
 */
@Data
public class ResultVo<T> implements Serializable {

    private static final long serialVersionUID = 1L;

    //状态码
    private int code;

    //状态码描述
    private String message;

    //数据结果，泛型，可以是列表、单个对象、数字、布尔值等
    private T data;

    public ResultVo() {
    }

    public ResultVo(int code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 操作成功，返回数据
     * 状态码200
     *
     * @param data 携带的数据
     * @return {@link ResultVo}<{@link T}>
     */
    public static <T> ResultVo<T> success(T data) {
        ResultVo<T> resultVo = new ResultVo<>();
        resultVo.setCode(200);
        resultVo.setMessage("OK");
        resultVo.setData(data);
        return  resultVo;
    }

    /**
     * 操作失败，返回数据
     * 状态码403
     *
     * @param data 携带的数据
     * @return {@link ResultVo}<{@link T}>
     */
    public static <T> ResultVo<T> fail(T data) {
        ResultVo<T> resultVo = new ResultVo<>();
        resultVo.setCode(403);
        resultVo.setMessage("Fail");
        resultVo.setData(data);
        return  resultVo;
    }
}

